package com.snowy.hidden.biz.controller;


import com.snowy.demo.log.annotation.SysLog;
import com.snowy.framework.common.base.controller.BaseController;
import com.snowy.framework.common.base.vo.LoginUser;
import com.snowy.framework.common.resp.BaseResp;
import com.snowy.framework.common.resp.BaseRespUtil;
import com.snowy.framework.exception.UABPException;
import com.snowy.hidden.biz.domain.req.*;
import com.snowy.hidden.biz.domain.resp.TaskDetailResp;
import com.snowy.hidden.biz.domain.resp.TaskListAssigmentResp;
import com.snowy.hidden.biz.domain.resp.TaskListResp;
import com.snowy.hidden.biz.domain.resp.TaskLogResp;
import com.snowy.hidden.biz.service.TaskService;
import com.snowy.hidden.constant.AuthConstant;
import com.snowy.hidden.constant.IntfErrorCode;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * 隐患管理(HiddenDanger)����Ʋ�
 *
 * @author makejava
 * @since 2023-12-12 15:44:53
 */
@RestController
@RequestMapping("task")
@Slf4j
public class TaskController extends BaseController {

    @Resource
    private TaskService taskService;


    /**
     * 盯防任务申请
     *
     * @return 删除结果
     */
    @ApiOperation(value = "盯防任务申请上报")
    @SysLog("盯防任务申请上报")
    @PostMapping("/addTask")
    public BaseResp addTask(@RequestBody TaskAddReq taskAddReq) {
        try {
            LoginUser userInfo = AuthConstant.userLocal.get();
            BaseResp baseResp = taskService.addTask(taskAddReq,userInfo);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==addTask=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * 任务列表查询
     *
     * @param taskListReq 分页模板
     * @return 删除结果
     */
    @SysLog("任务列表查询")
    @PostMapping("/queryTaskList")
    public BaseResp<List<TaskListResp>> queryTaskList(@RequestBody TaskListReq taskListReq) {
        try {
            BaseResp<List<TaskListResp>> baseResp = taskService.queryTaskList(taskListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }


    /**
     * (小程序用户)获取待指派任务列表查询
     *
     * @param taskListReq 分页模板
     * @return 删除结果
     */
    @SysLog("(小程序用户)获取待指派任务列表查询")
    @PostMapping("/queryTaskListByApplet")
    public BaseResp<List<TaskListResp>> queryTaskListByApplet(@RequestBody TaskListReq taskListReq) {
        try {
            BaseResp<List<TaskListResp>> baseResp = taskService.queryTaskListByApplet(taskListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }



    /**
     * 获取已申请的任务列表
     *
     * @param taskListReq 分页模板
     * @return 删除结果
     */
    @SysLog("获取已申请的任务列表")
    @PostMapping("/queryTaskListByApply")
    public BaseResp<List<TaskListAssigmentResp>> queryTaskListByApply(@RequestBody TaskListReq taskListReq) {
        try {
            BaseResp<List<TaskListAssigmentResp>> baseResp = taskService.queryTaskListByApply(taskListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }



    /**
     * 获取待审批任务列表
     *
     * @param taskListReq 分页模板
     * @return 删除结果
     */
    @SysLog("获取待审批任务列表")
    @PostMapping("/queryApprovalTaskList")
    public BaseResp<List<TaskListResp>> queryApprovalTaskList(@RequestBody TaskListReq taskListReq) {
        try {
            BaseResp<List<TaskListResp>> baseResp = taskService.queryApprovalTaskList(taskListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }


    /**
     * 获取任务详情
     *
     * @param taskDetailReq 分页模板
     * @return 删除结果
     */
    @SysLog("获取任务详情")
    @PostMapping("/queryTaskDetail")
    public BaseResp<TaskDetailResp> queryTaskDetail(@RequestBody TaskDetailReq taskDetailReq) {
        try {
            BaseResp<TaskDetailResp> baseResp = taskService.queryTaskDetail(taskDetailReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }


    /**
     * 分管领导任务审核
     *
     * @param taskAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "分管领导任务审核")
    @SysLog("分管领导任务审核")
    @PostMapping("/chargeTaskAudit")
    public BaseResp chargeTaskAudit(@RequestBody TaskAuditReq taskAuditReq) {
        try {
            BaseResp baseResp = taskService.chargeAudit(taskAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * 任务申请
     *
     * @param taskAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "任务申请")
    @SysLog("任务申请")
    @PostMapping("/taskAssignment")
    public BaseResp taskAssignment(@RequestBody TaskAuditReq taskAuditReq) {
        try {
            BaseResp baseResp = taskService.taskAssignment(taskAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }


    /**
     * 人员指派
     *
     * @param assigmentUserReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "人员指派")
    @SysLog("人员指派")
    @PostMapping("/assignmentUser")
    public BaseResp assignmentUser(@RequestBody AssigmentUserReq assigmentUserReq) {
        try {
            BaseResp baseResp = taskService.assignmentUser(assigmentUserReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * (小程序用户)获取任务列表查询
     *
     * @param taskListReq 分页模板
     * @return 删除结果
     */
    @SysLog("(小程序用户)获取任务列表查询")
    @PostMapping("/myTaskList")
    public BaseResp<List<TaskListResp>> myTaskList(@RequestBody TaskListReq taskListReq) {
        try {
            BaseResp<List<TaskListResp>> baseResp = taskService.myTaskList(taskListReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * (小程序用户)盯防任务上报
     *
     * @param taskLogSubmitReq 分页模板
     * @return 删除结果
     */
    @SysLog("(小程序用户)盯防任务上报")
    @PostMapping("/submitTaskLog")
    public BaseResp submitTaskLog(@RequestBody TaskLogSubmitReq taskLogSubmitReq) {
        try {
            BaseResp baseResp = taskService.submitTaskLog(taskLogSubmitReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }


    /**
     * (小程序用户)盯防任务上报日志
     *
     * @param taskLogSubmitReq 分页模板
     * @return 删除结果
     */
    @SysLog("(小程序用户)盯防任务上报日志")
    @PostMapping("/taskLogListById")
    public BaseResp<List<TaskLogResp>> taskLogListById(@RequestBody TaskLogSubmitReq taskLogSubmitReq) {
        try {
            BaseResp baseResp = taskService.taskLogListById(taskLogSubmitReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }


    /**
     * (小程序用户)盯防任务判定
     *
     * @param taskJudgeReq 分页模板
     * @return 删除结果
     */
    @SysLog("(小程序用户)盯防任务判定")
    @PostMapping("/taskJudge")
    public BaseResp taskJudge(@RequestBody TaskJudgeReq taskJudgeReq) {
        try {
            BaseResp baseResp = taskService.taskJudge(taskJudgeReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }








}
